LINQ partitioneringsoperatoren
Home

LINQ partitioneringsoperatoren

LINQ partitioneringsoperatoren

Een partitioneringsquery's neemt een inputreeks en retourneren een "stuk" als outputreeks. Deze operatoren kan je gebruiken om grote sequenties in "pagina's" op te breken. Dat heet paging,

Take

De Take query operator neemt een input reeks en geeft het opgegeven aantal elementen terug als uitvoerreeks.

De volgende code laat zien hoe je de Take query operator kan gebruiken om de eerste drie personen in de Personen reeks te retourneren.

static void LinqTakeOperator()
{
    Personen[] personen =
    {
        new Personen { Name = "Jan", Leeftijd = 60 },
        new Personen { Name = "An", Leeftijd = 100 },
        new Personen { Name = "Peter", Leeftijd = 15 },
        new Personen { Name = "Marijke", Leeftijd = 40 },
        new Personen { Name = "Judith", Leeftijd = 20 }
    };
    IEnumerable<Personen> eersteDriePersonen = personen.Take(3);
    Console.WriteLine("Namen van de eerste drie personen:");
    foreach (Personen persoon in eersteDriePersonen)
    {
        Console.WriteLine(persoon.Name);
    }
}

TakeWhile

De TakeWhile queryoperator retourneert geen van te voren vast bepaald aantal elementen, maar blijft daarentegen elementen retourneren zolang een gespecificeerd predikaat waar is.

In de volgende code worden Personen gertourneerd zolang de leeftijd niet 11 is.

Personen[] personen =
{
    new Personen { Name = "Jan", Leeftijd = 60 },
    new Personen { Name = "An", Leeftijd = 100 },
    new Personen { Name = "Peter", Leeftijd = 15 },
    new Personen { Name = "Hans", Leeftijd = 11 },
    new Personen { Name = "Marijke", Leeftijd = 40 },
    new Personen { Name = "Judith", Leeftijd = 20 }
};
IEnumerable<Personen> personenZolangGeenElfJaar = 
    personen.TakeWhile(x => x.Leeftijd != 11);
Console.WriteLine("Namen tot er een persoon van 11 jaar wordt tegengekomen:");
foreach (Personen persoon in personenZolangGeenElfJaar)
{
    Console.WriteLine(persoon.Name);
}

JI
2018-09-12 12:52:43